package com.love.marriage.datingRegistrationInfo.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.love.marriage.common.vo.BaseVo;
import com.love.marriage.config.Long2StringSerializer;
import com.love.marriage.datingInfo.vo.DatingInfoVo;
import com.love.marriage.identityVerification.vo.IdentityVerificationVo;
import com.love.marriage.userInfo.vo.UserInfoVo;
import com.love.marriage.userProfileInfo.vo.UserProfileInfoVo;
import com.love.marriage.userPartnerPreferences.vo.UserPartnerPreferencesVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * @description:  约会报名表Vo
 * @author:       mybatisPlus
 * @createDate:   2024-10-15 23:02:33
 * @version:      1.0.0
 */
@Getter
@Setter
@Accessors(chain = true)
@Schema(name = "DatingRegistrationInfoVo", description = "约会报名表Vo")
public class DatingRegistrationInfoVo extends BaseVo<DatingRegistrationInfoVo>{

    @JsonSerialize(using = Long2StringSerializer.class)
    @Schema(description = "约会ID，关联约会表", type = "Long", implementation = Long.class)
    private Long datingId;

    @JsonSerialize(using = Long2StringSerializer.class)
    @Schema(description = "报名人ID，关联用户表", type = "Long", implementation = Long.class)
    private Long userId;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
    @Schema(description = "报名时间(yyyy-MM-dd HH:mm:ss)", type = "LocalDateTime", implementation = LocalDateTime.class)
    private LocalDateTime registrationTime;

    @Schema(description = "报名状态", type = "String", implementation = String.class)
    private String status;

    @Schema(description = "支付金额", type = "BigDecimal", implementation = BigDecimal.class)
    private BigDecimal payAmount;

    @Schema(description = "约会信息", type = "DatingInfoVo", implementation = DatingInfoVo.class)
    private DatingInfoVo datingInfoVo;

    @Schema(description = "用户信息", type = "UserInfoVo", implementation = UserInfoVo.class)
    private UserInfoVo userInfoVo;

    @Schema(description = "报名人信息", type = "UserProfileInfoVo", implementation = UserProfileInfoVo.class)
    private UserProfileInfoVo userProfileInfoVo;

    @Schema(description = "报名时间从", type = "LocalDateTime", implementation = LocalDateTime.class)
    private LocalDateTime registrationTimeFrom;

    @Schema(description = "报名时间到", type = "LocalDateTime", implementation = LocalDateTime.class)
    private LocalDateTime registrationTimeTo;

    @Schema(description = "约会内容", type = "String", implementation = String.class)
    private String content;

    @Schema(description = "身份信息", type = "IdentityVerificationVo", implementation = IdentityVerificationVo.class)
    private IdentityVerificationVo identityVerificationVo;

    @Schema(description = "用户择偶要求", type = "UserPartnerPreferencesVo", implementation = UserPartnerPreferencesVo.class)
    private UserPartnerPreferencesVo userPartnerPreferencesVo;
}
